TBS = {}
---@param name string
---@param super string
function TBS.CreateClass(name,super)
    local _super
    if super then
        _super = TBS[super]
    end
    local cls = Class(name,_super)
    TBS[name] = cls
    return cls
end
function TBS.CreateSingleton(name)
    local cls = {}
    TBS[name] = cls
    return cls
end
require("TurnBasedStrategy/Battle")
require("TurnBasedStrategy/VirtualServer")
require("TurnBasedStrategy/Mgr/BufferMgr")
require("TurnBasedStrategy/Mgr/PoolMgr")
require("TurnBasedStrategy/Mgr/EffectMgr")
require("TurnBasedStrategy/Mgr/SkillMgr")
require("TurnBasedStrategy/Mgr/ActorMgr")
require("TurnBasedStrategy/Mgr/RuleMgr")
require("TurnBasedStrategy/Mgr/ReportMgr")
require("TurnBasedStrategy/Mgr/CameraMgr")

require("TurnBasedStrategy/Skill/SkillBase")
require("TurnBasedStrategy/Skill/SkillNode")
require("TurnBasedStrategy/Skill/Skill")
require("TurnBasedStrategy/Effect/EffectBase")
require("TurnBasedStrategy/Effect/Bullet")
require("TurnBasedStrategy/Effect/UltimateEffect")
require("TurnBasedStrategy/Effect/FollowUIEffect")
require("TurnBasedStrategy/Buffer/BuffBase")
require("TurnBasedStrategy/Buffer/Buffer")
require("TurnBasedStrategy/Entity/Actor")
require("TurnBasedStrategy/Entity/Player")
require("TurnBasedStrategy/Command/CommandBase")


require("TurnBasedStrategy/TBSConfig") --config请保持在最后require








---@class TBS
---@field Battle TBS.Battle
---@field VirtualServer TBS.VirtualServer
---@field Actor TBS.Actor
---@field Player TBS.Player
---@field ActorMgr TBS.ActorMgr
---@field Battle TBS.Battle
---@field PoolMgr TBS.PoolMgr
---@field EffectMgr TBS.EffectMgr
---@field BufferMgr TBS.BufferMgr
---@field RuleMgr TBS.RuleMgr
---@field ReportMgr TBS.ReportMgr
---@field CameraMgr TBS.CameraMgr
---@field Config TBS.Config
---@field SkillBase TBS.SkillBase
---@field SkillNodeBase TBS.SkillNodeBase
---@field EffectNode TBS.EffectNode
---@field BuffNode TBS.BuffNode
---@field ShakeNode TBS.ShakeNode
---@field AnimationEventNode TBS.AnimationEventNode
---@field Skill TBS.Skill
---@field SkillMgr TBS.SkillMgr
---@field EffectBase TBS.EffectBase
---@field Bullet TBS.Bullet
---@field UltimateEffect TBS.UltimateEffect
---@field FollowUIEffect TBS.FollowUIEffect
---@field Buffer TBS.Buffer
---@field BuffBase TBS.BuffBase
---@field CommandBase TBS.CommandBase
---@field CommandInit TBS.CommandInit
---@field CommandAttack TBS.CommandAttack
---@field CommandDamage TBS.CommandDamage
---@field CommandBuff TBS.CommandBuff
---@field CommandDead TBS.CommandDead
---@field CommandRound TBS.CommandRound
---@field CommandHit TBS.CommandHit

---@class EffectGCompItem
---@field gComp GComponent
---@field wrapper GoWrapper
---@field root GGraph
---@field gameObject GameObject

---@class BaseContext
---@field casterId string
---@field skillId number

---@class HitContext:BaseContext
---@field targetId string
---@field eventFinish boolean
---@field damage number
---@field damageType number
---@field posX number
---@field posY number
